/**
 * 蓝牙数据处理服务
 * 用于处理蓝牙数据的解析和处理
 */

import { ab2hex, checkPackage, convertFloat } from '@/public/BluetoothFun'
import impedanceDataService from './ImpedanceDataService'

/**
 * 检查蓝牙数据格式并处理
 * @param {ArrayBuffer} data - 蓝牙数据
 * @returns {Boolean} 是否成功处理数据
 */
function checkFormat(data) {
  if (!data) {
    console.error('蓝牙数据为空');
    return false;
  }
  
  try {
    // 将ArrayBuffer转换为十六进制字符串
    const hexData = ab2hex(data);
    console.log('蓝牙数据(HEX):', hexData);
    
    // 检查数据格式是否正确
    if (!hexData || hexData.length < 10) {
      console.error('蓝牙数据格式错误:', hexData);
      return false;
    }
    
    // 解析阻抗数据
    const leftValue = parseInt(hexData.substring(2, 6), 16);
    const rightValue = parseInt(hexData.substring(6, 10), 16);
    
    console.log('解析的阻抗数据:', { leftValue, rightValue });
    
    // 检查阻抗值是否有效
    if (isNaN(leftValue) || isNaN(rightValue) || leftValue <= 0 || rightValue <= 0) {
      console.error('阻抗值无效:', { leftValue, rightValue });
      return false;
    }
    
    // 添加阻抗数据
    const result = impedanceDataService.addImpedanceData(leftValue, rightValue);
    console.log('阻抗数据添加结果:', result);
    
    return result;
  } catch (error) {
    console.error('处理蓝牙数据时出错:', error);
    return false;
  }
}

/**
 * 深度检测功能，处理阻抗数据并更新显示
 * @param {Array} array - 经过初步处理的数据数组
 */
function analyticDeepData(array) {
  // 解析数据前端部分
  let decode_front = array.slice(4, -3)

  // 获取左脑阻抗值，转换为整数
  let fixL = parseInt(convertFloat(decode_front.slice(0, 4).reverse()))
  // 获取右脑阻抗值，转换为整数
  let fixR = parseInt(convertFloat(decode_front.slice(4, 8).reverse()))

  // 计算当前全脑平均值
  const currentAverage = parseInt((fixL + fixR) / 2)
  console.log(
    '左脑阻抗:',
    fixL,
    '右脑阻抗:',
    fixR,
    '平均阻抗:',
    currentAverage
  )

  // 添加新的阻抗数据
  impedanceDataService.addImpedanceData(fixL, fixR)
}

/**
 * 处理左脑数据
 * @param {Array} array - 经过初步处理的数据数组
 */
function analyticLeftBrainData(array) {
  // 解析数据前端部分
  let decode_front = array.slice(4, -3)

  // 获取左脑阻抗值，转换为整数
  let fixL = parseInt(convertFloat(decode_front.slice(0, 8).reverse()))
  
  console.log('左脑阻抗(专用):', fixL)

  // 只更新左脑数据
  impedanceDataService.updateLeftBrainData(fixL)
}

/**
 * 处理右脑数据
 * @param {Array} array - 经过初步处理的数据数组
 */
function analyticRightBrainData(array) {
  // 解析数据前端部分
  let decode_front = array.slice(4, -3)
  console.log('decode_front:', decode_front)

  // 获取右脑阻抗值，转换为整数
  let fixR = parseInt(convertFloat(decode_front.slice(0, 8).reverse()))
  
  console.log('右脑阻抗(专用):', fixR)

  // 只更新右脑数据
  impedanceDataService.updateRightBrainData(fixR)
}

// 导出服务函数
export default {
  checkFormat
} 